import axios from 'axios'

// 创建axios实例
const request = axios.create({
  baseURL: '/api',
  timeout: 30000
})

// 请求拦截器
request.interceptors.request.use(
  config => {
    // 可以在这里添加token等认证信息
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    console.error('API请求错误:', error)
    
    // 处理HTTP错误状态码
    if (error.response) {
      const status = error.response.status
      const data = error.response.data
      
      // 创建一个增强的错误对象
      const enhancedError = new Error()
      enhancedError.status = status
      enhancedError.data = data
      
      switch (status) {
        case 429:
          enhancedError.message = data?.error || '您今天已经对该解答评过分了，请明天再试'
          break
        case 400:
          enhancedError.message = data?.error || '请求参数错误'
          break
        case 401:
          enhancedError.message = '未授权，请先登录'
          break
        case 403:
          enhancedError.message = '没有权限访问'
          break
        case 404:
          enhancedError.message = '请求的资源不存在'
          break
        case 500:
          enhancedError.message = '服务器内部错误'
          break
        default:
          enhancedError.message = data?.error || data?.message || '请求失败'
      }
      
      return Promise.reject(enhancedError)
    }
    
    // 网络错误或超时
    const networkError = new Error()
    if (error.code === 'ECONNABORTED') {
      networkError.message = '请求超时，请稍后重试'
    } else if (error.message === 'Network Error') {
      networkError.message = '网络连接失败，请检查网络'
    } else {
      networkError.message = error.message || '请求失败'
    }
    
    return Promise.reject(networkError)
  }
)

export default request
